Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

465
Visualizações
Módulos ES y jsconfig.json: Error [ERR_MODULE_NOT_FOUND]

Obtuve un proyecto de aplicación web de nodo que usa JS normal.

Estoy tratando de establecer algunas rutas usando jsconfig.json . Intenté usar las Subpath imports predeterminadas del nodo e incluso si funciona, vscode intellisense dejó de funcionar.

Descubrí que podía usar jsconfig.json , así que configuré este archivo

 { "compilerOptions": { "target": "es6", "module": "commonjs", "baseUrl": "./", "paths": { "@controllers/*": ["node/controllers/*"], }, }, "exclude": ["node_modules"] }

Y en mi package.json agregué

 "type": "module",

Mi estructura de carpetas es

 ├── node │ └──controllers │ └── foo.js ├── server.js ├── jsconfig.json └── package.json

Pero cuando intento importar desde server.js

 import { foo } from '@controllers/foo.js' // or import { foo } from '@controllers/foo'

foo.js

 export const foo = 'Hello server'

yo obtengo

 node:internal/process/esm_loader:74 internalBinding('errors').triggerUncaughtException( Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@controllers/foo.js' imported from /Users/Alvaro/Sites/test/server.js at new NodeError (node:internal/errors:363:5) at packageResolve (node:internal/modules/esm/resolve:698:9) at moduleResolve (node:internal/modules/esm/resolve:739:18) at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:853:11) at Loader.resolve (node:internal/modules/esm/loader:89:40) at Loader.getModuleJob (node:internal/modules/esm/loader:242:28) at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:73:40) at link (node:internal/modules/esm/module_job:72:36) { code: 'ERR_MODULE_NOT_FOUND'
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Después de horas de investigación, descubrí que es muy difícil tener una ruta de alias personalizada al usar esm y muy fácil de configurar para commonjs ,

pero se puede lograr, de una manera ligeramente diferente cuando usa esm , escribiré la solución para la implementación de esm en el método 1 y luego para commonjs en el método 2

Método 1

Paso 0:

eliminar jsconfig.json

Paso 1:

en su package.json agregue una propiedad de exports ,

 "name": "package-name" "exports":{ "./@controllers/" : "./node/controllers/" }

Nota: no olvide el '/' después de @controllers y /node/controllers/

Paso 2

tendrás que importar el archivo

 import {foo} from "package-name/controllers/index.js" /* package-name is the same value as the 'name' property in the package.json */

para obtener más información sobre la propiedad de exports en package.json , consulte aquí

------------------------------XXXXXXXXX------------------- ---------------

Método 2

no puedes usar es modules en este método

Paso 0

instale el paquete module-alias .

npm i module-alias

elimine type:module si existe en package.json o cambie el valor a commonjs ;

Paso 1

Agregue el siguiente código en la línea de inicio del archivo que se especifica como entry point en package.json

require(module-alias/register)

verifique la propiedad main en package.json en el caso del autor, debería ser server.js .

en package.json agrega esto

 "_moduleAliases": { "@root" : ".", // Don't forget to mnetion this "@controllers" : "node/controllers/*" }

Ahora puede requerir módulos de directorios como a continuación

 const {foo} = require("@controllers/foo.js") // if foo is named export //or const foo = require("@controllers/foo.js");

puede consultar más sobre la biblioteca module-alias aquí

about 4 years ago · Juan Pablo Isaza Relatório

0

Lo que has probado es casi correcto.

puede hacer que los alias funcionen, pero tiene que comenzar con # .

por ejemplo: en package.json

 "imports": { "#app": "./app.js" }

y en jsconfig.json

 { "compilerOptions": { "paths": { "#app": ["./app.js"] } } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda